package com.platform.enums;

import com.platform.comm.enums.IDictEntry;
import com.platform.comm.enums.IEnumItem;

/**
 * 目录元信息基本类型（字段组）
 *
 *  @author wxw
 *  @date 2021-08-23
 */
public enum DirMetadataFieldGroup implements IDictEntry, IEnumItem {

    QZ_BASE("QZ_BASE", "前置库基本字段", "LYDW, LYDWDM,UPDATE_DATE"),
    NO_MAIN_TRADE_BASE("NO_MAIN_TRADE_BASE", "非主、交易数据基本字段", "CREATE_BY, CREATE_DATE," +
            "CREATE_DEPT, UPDATE_BY, UPDATE_DATE"),

    /**
     * 主键
     */
    ID("PRI", "主键", "ID"),
    /**
     * 基本字段
     */
    BASE("BASE", "基本字段", "RESOURCE_KEY, CREATE_BY, CREATE_DATE, " +
            "CREATE_DEPT, UPDATE_BY, UPDATE_DATE, FLAG, CHECK_ERR_MSG, IMPORT_ID, IMPORT_CHECK_FLAG,SRC_ID"),

    /**
     * 自然人信息字段
     */
    NAT_BASE("NAT", "自然人信息字段", "NAME, ID_TYPE, ID_CODE"),

    /**
     * 法人信息字段
     */
    LEG_BASE("LEG", "法人信息字段", "COMP_NAME, ID_TYPE, ID_CODE"),

    /**
     * 更新时间
     */
    UPDATE_DATE("UPDATE_DATE", "更新时间", "UPDATE_DATE");


    public final String code;
    public final String title;
    public final String fieldNames;

    /**
     * 构造方法
     *
     * @param code       编码
     * @param title      标题
     * @param fieldNames 逗号分隔的字段名列表
     */
    DirMetadataFieldGroup(String code, String title, String fieldNames) {
        this.code = code;
        this.title = title;
        this.fieldNames = fieldNames;
    }

    /**
     * 根据编码解析枚举值
     *
     * @param code 枚举值编码
     * @return 元信息字段组
     */
    public static DirMetadataFieldGroup parse(String code) {
        for (DirMetadataFieldGroup baseType : values()) {
            if (baseType.is(code)) {
                return baseType;
            }
        }
        return null;
    }


    @Override
    public boolean is(String code) {
        return this.code.equals(code);
    }

    @Override
    public String getKey() {
        return code;
    }

    @Override
    public String getValue() {
        return title;
    }

    @Override
    public Object getData() {
        return this;
    }

}
